package week7.kaarten;

import week7.util.*;

/**
 * een flexibel soorteerbare hand
 * Practicumopgave Programmeren 1
 * @author Rick Clement en Adriaan Dekker
 * @version $Revision: 1.3 $
 */
public class FlexHand extends Hand {
    // ------------------ Instantievariabelen ----------------
	
	private Ordening<Kaart> ordening;
   
    // ------------------ Constructor ------------------------

    /**
     * maakt een FlexHand-object aan met een variabele ordening
     * @param ordening een Ordening<Kaart>-object waarmee de hand zal worden gesorteerd
     */
	public FlexHand(Ordening<Kaart> ordening) {
		this.ordening = ordening;
		int maxi = (int)(Math.random() * 15);
		for (int i = 0; i < maxi; i++) {
			addRandomKaart();
		}
	}
   
	// ------------------ Aanvragen --------------------------
	
	public Ordening<Kaart> getOrdening() {
		return ordening;
	}
	
    // ------------------ Commando's --------------------------
	
	public void setOrdening(Ordening<Kaart> ordening) {
		if (!(ordening.getClass() == this.ordening.getClass())) {
			this.ordening = ordening;
			Sorteerder.sorteer(list, ordening);
		}
	}
	
    public boolean lessThan(Kaart kaart1, Kaart kaart2) {
		return ordening.lessThan(kaart1, kaart2);
	}
	
	public void addRandomKaart() {
		String[] kaartKleuren = {"H","K","S","R"};
		String[] kaartWaarden = {"2", "3", "4", "5", "6", "7", "8", "9", "T", "B", "V", "H", "A"};
		String kaart = "";
			kaart += kaartKleuren[(int)(Math.random() * kaartKleuren.length)];
			kaart += kaartWaarden[(int)(Math.random() * kaartWaarden.length)];
		add(new Kaart(kaart.charAt(0), kaart.charAt(1)));
	}
}
